<?php

namespace think\exception;

use think\Exception;

/**
 * ThinkPHP错误异常
 * 主要用于封装 set_error_handler 和 register_shutdown_function 得到的错误
 * 除开从 think\Exception 继承的功能
 * 其他和PHP系统\ErrorException功能基本一样
 */
class ErrorException extends Exception
{
  /**
   * 用于保存错误级别
   * @var integer
   */
  protected $severity;

  /**
   * 错误异常构造函数
   * @param integer $severity 错误级别
   * @param string  $message  错误详细信息
   * @param string  $file     出错文件路径
   * @param integer $line     出错行号
   * @param array   $context  错误上下文，会包含错误触发处作用域内所有变量的数组
   */
  public function __construct($severity, $message, $file, $line, array $context = [])
  {
    $this->severity = $severity;
    $this->message  = $message;
    $this->file     = $file;
    $this->line     = $line;
    $this->code     = 0;

    empty($context) || $this->setData('Error Context', $context);
  }

  /**
   * 获取错误级别
   * @return integer 错误级别
   */
  final public function getSeverity()
  {
    return $this->severity;
  }
}
